home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / LICENSED.PAK / LICENCTL.CPP < prev    next >
C/C++ Source or Header  |  1997-05-06  |  7KB  |  241 lines

  1. // licenctl.cpp : Implementation of the CLicensedCtrl OLE control class.
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1995 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12.  
  13. #include "stdafx.h"
  14. #include "licensed.h"
  15. #include "licenctl.h"
  16. #include "licenppg.h"
  17.  
  18.  
  19. #ifdef _DEBUG
  20. #undef THIS_FILE
  21. static char BASED_CODE THIS_FILE[] = __FILE__;
  22. #endif
  23.  
  24.  
  25. IMPLEMENT_DYNCREATE(CLicensedCtrl, COleControl)
  26.  
  27.  
  28. /////////////////////////////////////////////////////////////////////////////
  29. // Message map
  30.  
  31. BEGIN_MESSAGE_MAP(CLicensedCtrl, COleControl)
  32.     //{{AFX_MSG_MAP(CLicensedCtrl)
  33.     //}}AFX_MSG_MAP
  34.     ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
  35. END_MESSAGE_MAP()
  36.  
  37.  
  38. /////////////////////////////////////////////////////////////////////////////
  39. // Dispatch map
  40.  
  41. BEGIN_DISPATCH_MAP(CLicensedCtrl, COleControl)
  42.     //{{AFX_DISPATCH_MAP(CLicensedCtrl)
  43.     //}}AFX_DISPATCH_MAP
  44.     DISP_FUNCTION_ID(CLicensedCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
  45. END_DISPATCH_MAP()
  46.  
  47.  
  48. /////////////////////////////////////////////////////////////////////////////
  49. // Event map
  50.  
  51. BEGIN_EVENT_MAP(CLicensedCtrl, COleControl)
  52.     //{{AFX_EVENT_MAP(CLicensedCtrl)
  53.     //}}AFX_EVENT_MAP
  54. END_EVENT_MAP()
  55.  
  56.  
  57. /////////////////////////////////////////////////////////////////////////////
  58. // Property pages
  59.  
  60. // TODO: Add more property pages as needed.  Remember to increase the count!
  61. BEGIN_PROPPAGEIDS(CLicensedCtrl, 1)
  62.     PROPPAGEID(CLicensedPropPage::guid)
  63. END_PROPPAGEIDS(CLicensedCtrl)
  64.  
  65.  
  66. /////////////////////////////////////////////////////////////////////////////
  67. // Initialize class factory and guid
  68.  
  69. IMPLEMENT_OLECREATE_EX(CLicensedCtrl, "LICENSED.LicensedCtrl.1",
  70.     0x973b27a3, 0xf232, 0x101a, 0xb5, 0x7b, 0x0, 0x60, 0x8c, 0xc9, 0x6a, 0xfa)
  71.  
  72.  
  73. /////////////////////////////////////////////////////////////////////////////
  74. // Type library ID and version
  75.  
  76. IMPLEMENT_OLETYPELIB(CLicensedCtrl, _tlid, _wVerMajor, _wVerMinor)
  77.  
  78.  
  79. /////////////////////////////////////////////////////////////////////////////
  80. // Interface IDs
  81.  
  82. const IID BASED_CODE IID_DLicensed =
  83.         { 0x37446b80, 0x5870, 0x101b, { 0xb5, 0x7b, 0x0, 0x60, 0x8c, 0xc9, 0x6a, 0xfa } };
  84. const IID BASED_CODE IID_DLicensedEvents =
  85.         { 0x37446b81, 0x5870, 0x101b, { 0xb5, 0x7b, 0x0, 0x60, 0x8c, 0xc9, 0x6a, 0xfa } };
  86.  
  87.  
  88. /////////////////////////////////////////////////////////////////////////////
  89. // Control type information
  90.  
  91. static const DWORD BASED_CODE _dwLicensedOleMisc =
  92.     OLEMISC_ACTIVATEWHENVISIBLE |
  93.     OLEMISC_SETCLIENTSITEFIRST |
  94.     OLEMISC_INSIDEOUT |
  95.     OLEMISC_CANTLINKINSIDE |
  96.     OLEMISC_RECOMPOSEONRESIZE;
  97.  
  98. IMPLEMENT_OLECTLTYPE(CLicensedCtrl, IDS_LICENSED, _dwLicensedOleMisc)
  99.  
  100.  
  101. /////////////////////////////////////////////////////////////////////////////
  102. // CLicensedCtrl::CLicensedCtrlFactory::UpdateRegistry -
  103. // Adds or removes system registry entries for CLicensedCtrl
  104.  
  105. BOOL CLicensedCtrl::CLicensedCtrlFactory::UpdateRegistry(BOOL bRegister)
  106. {
  107.     if (bRegister)
  108.         return AfxOleRegisterControlClass(
  109.             AfxGetInstanceHandle(),
  110.             m_clsid,
  111.             m_lpszProgID,
  112.             IDS_LICENSED,
  113.             IDB_LICENSED,
  114.             FALSE,                      //  Not insertable
  115.             _dwLicensedOleMisc,
  116.             _tlid,
  117.             _wVerMajor,
  118.             _wVerMinor);
  119.     else
  120.         return AfxOleUnregisterClass(m_clsid, m_lpszProgID);
  121. }
  122.  
  123.  
  124. /////////////////////////////////////////////////////////////////////////////
  125. // Licensing strings
  126.  
  127. static const TCHAR BASED_CODE _szLicFileName[] = _T("LICENSED.LIC");
  128.  
  129. static const OLECHAR BASED_CODE _szLicString[] =
  130.     OLESTR("Licensed Control Copyright (c) 1994-1995 Microsoft Corporation");
  131.  
  132.  
  133. /////////////////////////////////////////////////////////////////////////////
  134. // CLicensedCtrl::CLicensedCtrlFactory::VerifyUserLicense -
  135. // Checks for existence of a user license
  136.  
  137. BOOL CLicensedCtrl::CLicensedCtrlFactory::VerifyUserLicense()
  138. {
  139.     BOOL foundLicFile = AfxVerifyLicFile(AfxGetInstanceHandle(), _szLicFileName,
  140.         _szLicString);
  141.  
  142.     // Display message box reporting whether or not license file was found
  143.     if (foundLicFile)
  144.         ::MessageBox(0, _T("Found license file !"), _T("VerifyUserLicense"), MB_OK | MB_ICONINFORMATION);
  145.     else
  146.         ::MessageBox(0, _T("Couldn't find license file !"), _T("VerifyUserLicense"), MB_OK | MB_ICONSTOP);
  147.  
  148.     return (foundLicFile);
  149. }
  150.  
  151.  
  152. /////////////////////////////////////////////////////////////////////////////
  153. // CLicensedCtrl::CLicensedCtrlFactory::GetLicenseKey -
  154. // Returns a runtime licensing key
  155.  
  156. BOOL CLicensedCtrl::CLicensedCtrlFactory::GetLicenseKey(DWORD,
  157.     BSTR FAR* pbstrKey)
  158. {
  159.     if (pbstrKey == NULL)
  160.         return FALSE;
  161.  
  162.     *pbstrKey = SysAllocString(_szLicString);
  163.     return (*pbstrKey != NULL);
  164. }
  165.  
  166.  
  167. /////////////////////////////////////////////////////////////////////////////
  168. // CLicensedCtrl::CLicensedCtrl - Constructor
  169.  
  170. CLicensedCtrl::CLicensedCtrl()
  171. {
  172.     InitializeIIDs(&IID_DLicensed, &IID_DLicensedEvents);
  173. }
  174.  
  175.  
  176. /////////////////////////////////////////////////////////////////////////////
  177. // CLicensedCtrl::~CLicensedCtrl - Destructor
  178.  
  179. CLicensedCtrl::~CLicensedCtrl()
  180. {
  181. }
  182.  
  183.  
  184. /////////////////////////////////////////////////////////////////////////////
  185. // CLicensedCtrl::OnDraw - Drawing function
  186.  
  187. void CLicensedCtrl::OnDraw(
  188.             CDC* pdc, const CRect& rcBounds, const CRect&)
  189. {
  190.     TEXTMETRIC tm;
  191.     CString line1("Licensed");
  192.     CString line2("Control");
  193.  
  194.     // Draw caption
  195.  
  196.     CFont* pOldFont = SelectStockFont(pdc);
  197.     GetStockTextMetrics(&tm);
  198.  
  199.     pdc->SetTextAlign(TA_CENTER | TA_TOP);
  200.     pdc->ExtTextOut((rcBounds.left + rcBounds.right) / 2, rcBounds.top, ETO_CLIPPED | ETO_OPAQUE, rcBounds, line1,
  201.         line1.GetLength(), NULL);
  202.     pdc->ExtTextOut((rcBounds.left + rcBounds.right) / 2, rcBounds.top + tm.tmHeight, ETO_CLIPPED, rcBounds,
  203.         line2, line2.GetLength(), NULL);
  204.     pdc->SelectObject(pOldFont);
  205. }
  206.  
  207.  
  208. /////////////////////////////////////////////////////////////////////////////
  209. // CLicensedCtrl::DoPropExchange - Persistence support
  210.  
  211. void CLicensedCtrl::DoPropExchange(CPropExchange* pPX)
  212. {
  213.     ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor));
  214.     COleControl::DoPropExchange(pPX);
  215.  
  216.     if (pPX->IsLoading())
  217.     {
  218.         CFontHolder& stockFont = InternalGetFont();
  219.         stockFont.InitializeFont();
  220.     }
  221. }
  222.  
  223.  
  224. /////////////////////////////////////////////////////////////////////////////
  225. // CLicensedCtrl::OnResetState - Reset control to default state
  226.  
  227. void CLicensedCtrl::OnResetState()
  228. {
  229.     COleControl::OnResetState();  // Resets defaults found in DoPropExchange
  230. }
  231.  
  232.  
  233. /////////////////////////////////////////////////////////////////////////////
  234. // CLicensedCtrl::AboutBox - Display an "About" box to the user
  235.  
  236. void CLicensedCtrl::AboutBox()
  237. {
  238.     CDialog dlgAbout(IDD_ABOUTBOX_LICENSED);
  239.     dlgAbout.DoModal();
  240. }
  241.